package org.jvending.masa.plugin.po;

import java.io.File;
import java.io.IOException;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.zip.ZipArchiver;

/**
 * @goal package
 * @requiresProject true
 * @description
 */
public class PoPackagerMojo
    extends AbstractMojo
{

    /**
     * The maven project.
     * 
     * @parameter expression="${project}"
     * @required
     * @readonly
     */
    private MavenProject project;

    /**
     * Input directory
     * 
     * @parameter expression = "${inputDirectory}" default-value="${project.build.directory}/po"
     * @required
     */
    private File inputDir;

    /**
     * Classifier
     * 
     * @parameter expression = "${classifier}" 
     */
    private String classifier;    
    
    public void execute()
        throws MojoExecutionException, MojoFailureException
    {
        if(!inputDir.exists())
        {
            getLog().info( "No po resource files to package."  );
            return;
        }
              
        File file = new File( project.getBuild().getDirectory(), project.getBuild().getFinalName()
                              + ((classifier != null) ? "-" + classifier : "") + ".pozip" );
        
        ZipArchiver archiver = new ZipArchiver();
        archiver.setForced( true );
        archiver.setDestFile( file );

        try
        {
            archiver.addDirectory( inputDir );
            archiver.createArchive();
        }
        catch ( ArchiverException e )
        {
            throw new MojoExecutionException( "", e );
        }
        catch ( IOException e )
        {
            throw new MojoExecutionException( "", e );
        }

        project.getArtifact().setFile( file );
    }
}